package com.yeban.javase.day20.test.test2;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

/**
 * @Desc TODO
 * @Author yeban
 * @Date 2025/11/4
 *
 * 需求：集合泛型为Integer，通过反射，将"abc"字符串添加至集合中
 * 已知：
 * List<Integer> list = new ArrayList<>();
 * list.add(10);
 * list.add(20);
 * list.add(30);
 * 输出结果：
 * [10, 20, 30, abc]
 *
 */
public class FieldTest2 {

    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        List<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(20);
        list.add(30);

        // 1. 获取类类型
        Class<? extends List> clazz = list.getClass();

        // 2. 获取 add(Object e) 方法
        Method addMethod = clazz.getMethod("add", Object.class);

        // 3. 调用反射方法，添加字符串元素
        addMethod.invoke(list, "abc");

        // 4. 输出结果
        System.out.println(list);
    }
}
